/**********************************************************************//**
 @file primitives.hpp 
 @brief Contains some primitives datatypes and methods for computational geometry.
 @author Ricardo C. Marques <rmarques@inf.puc-rio.br>
 @version 0.0.1
 @date 05/11/2012
**************************************************************************/
#ifndef _PRIMITIVES_HPP
#define _PRIMITIVES_HPP

typedef struct point2d
{
    double x,y;
} Point2D;

typedef struct point3d
{
    double x,y,z;
} Point3D;

double  orient2d(Point2D A, Point2D B, Point2D C);
double  orient2d(Point3D A, Point3D B, Point3D C);

double  incircle(Point2D A, Point2D B, Point2D C, Point2D D);
double  incircle(Point3D A, Point3D B, Point3D C, Point3D D);

bool    OrientedPositively(Point2D A, Point2D B, Point2D C);
bool    OrientedPositively(Point3D A, Point3D B, Point3D C);

Point2D GetCircumcenter(Point2D A, Point2D B, Point2D C );
Point2D GetCircumcenter(Point3D A, Point3D B, Point3D C );

#endif